﻿using System;
using System.Collections.Generic;

namespace MAF.Common
{
    /// <summary>
    /// 存储库接口，
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IRepository<T>
    {
        void Add(T entity);

        int Update(T entity);               // 一般实现为修改单条数据
        int Update(List<T> entities);       // 
        int UpdateByQuery(Query<T> q);      // 一般实现为修改多条数据
        
        int Remove(Guid id);
        int Remove(T entity);
        int Remove(string ids);
        int Remove(List<T> entities);
        int RemoveByQuery(Query<T> q);

        T GetById(Guid id);
        List<T> GetByQuery(Query<T> q);
        int CountByQuery(Query<T> q);
    }
}